import {asyncRouterMap,constantRouterMap } from "@/router";
import {mergeRoutesByMenuCode} from "@/store/index";
import {getGlobalMenu} from "@/api/api";
import {setToken} from "@/utils/token";
import { Message } from 'element-ui';
export default {
    namespaced:true,
//响应组件中的动作
    actions : {
        menuAll(context) {
            // console.log('context.allMenus',context);
            return new Promise((resolve, reject) => {
                console.log('context.state.allMenus',context.state.allMenus)
                if (context.state.allMenus.length > 0) {
                    // 如果allMenus已经存在，则直接返回
                    resolve(context.state.allMenus);
                } else {
                    // 如果allMenus不存在，则调用接口获取allMenus
                    getGlobalMenu()
                        .then((res) => {
                            // console.log(res.data.menuAll);
                            context.commit(
                                "MENUALL",
                                mergeRoutesByMenuCode(constantRouterMap, res.data.menuAll)
                            ); // 调用 mutations 中的 MENUALL 方法，并将获取到的菜单数据作为参数传入
                            context.commit("SET_USER_LOGIN", res.data.user_login);
                            resolve(context.state.allMenus);
                        })
                        .catch((error) => {
                            Message.error("获取菜单失败", error);
                            reject(error);
                        });
                }
            });
        },
         setUserLogin(context,value){
             context.commit("SET_USER_LOGIN", value);
         }

     },
// 对数据进行操作
     mutations : {
         MENUALL(state, menuData) {
             // console.log('menuData',menuData);
             state.allMenus = menuData || []; // 将获取到的菜单数据保存到 Vuex 状态管理器的 allMenus 属性中
         },
         SET_USER_LOGIN(state, user) {
             state.userLogin = user;
         }
     },
//一般用来计算state,类似计算属性
     getters : {
         getAllMenus: state => state.allMenus,
         getUserLogin: state => state.userLogin
     },

    //用于存储数据
    state : {
        allMenus:[],
        userLogin:'游客'
    },
}